package com.agstar.designpatten.creational.prototype;

public class Sheep implements Cloneable{

    private String name;
    private String color;

    /**
     * 协变返回类型 https://baike.baidu.com/item/协变返回值类型
     * 在子类中重写方法时可以用“较窄”类型替换的类型
     * 在Java1.4及以前，子类方法如果要覆盖超类的某个方法，
     * 必须具有完全相同的方法签名，包括返回值也必须完全一样。
     * Java5.0放宽了这一限制，只要子类方法与超类方法具有相同的方法签名，
     * 或者子类方法的返回值是超类方法的子类型，就可以覆盖。
     * 【注意】："协变返回(covariant return)"，
     * 仅在subclass（子类）的返回类型是superclass（父类）返回类型的extension（继承）时才被容许。
     */
    @Override
    protected Sheep clone() throws CloneNotSupportedException {
        return (Sheep)super.clone();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }



}
